1. Field of the Invention
The present invention relates to a method, system, and program for performing data operations and, in particular, for performing data transfer operations with respect to user data areas of data records that also include index information.
2. Description of the Related Art
With the Small Computer System Interface (SCSI), a read command can transfer a specified number of blocks from a starting block. A SCSI read command, such as the READ(10) command specifies a starting logical block address and a transfer length indicating the number of blocks to transfer from the starting logical block address. Similarly, the SCSI PRE-FETCH command can cause a specified number of blocks, indicated in the transfer length field, from a specified starting logical block address to be retrieved from storage and placed in cache for subsequent transfer to the requesting application. The SCSI commands are described in the publication "Information Technology-Small Computer System Interface-2," published by ANSI on Apr. 19, 1996, reference no. X3.131-199x, Revision 10L, which publication is incorporated herein by reference in its entirety.
In operating systems that conform to the International Business Machines Corporation ("IBM") Enterprise Systems Architecture (ESA) 360, 370, and 390 architectures, data transfer operations are performed using channel command words (CCW) which are transferred from a host computer system to a storage controller. Enterprise System Architecture/390 is a registered trademark of IBM. The storage controller, also referred to as a control unit or storage director, manages access to a storage space comprised of numerous hard disk drives connected in a loop architecture, otherwise referred to as a Direct Access Storage Device (DASD). In such systems, data may be stored in a Count-Key-Data ("CKD") data format. A count field provides the name and format of a record, the key length, and the data length. The key field, which is optional, is used for searching and may indicate the last data set in the record. The data field provides a variable length record of user data sets. The number of CKD records that can be placed on a track depends on the length of the data areas of the records.
FIG. 1 illustrates a CCW command sequence to transfer data. The first sequence of commands in the chain is a Define Extent command sequence which defines the extent or range of tracks in which a channel program will operate. The host system executes channel programs to perform data transfer operations. An extent is a set of consecutively addressed tracks that the channel program can access. The limits of an extent are defined by specifying the addresses of the first and last tracks in the extent. The Define Extent command sequence further defines attributes of, and limitations on, the commands that follow in the channel program. Following the Define Extent command sequence is a Locate Record command sequence that specifies the operations, the number of consecutive records (or tracks) involved in the data operation, and the address of the first track and the orientation state to establish before starting data transfer. One or more read or write command sequences may follow the Locate Record command sequence to perform data transfer operations. A read command sequence to allow the host to read data from the storage controller, labeled as number 2 in FIG. 1, involves the transfer of several separate commands between the host and the storage controller. The storage controller will perform the requested operation on the CKD records and present status information to the host indicating whether the operation failed or successfully completed.
Sequential data access occurs when numerous adjacent tracks are accessed, such as for a data backup operation, batch operations or to generate a large report. Generally, sequential data operations consume significantly more overhead, such as bus bandwidth, than random or nonsequential data operations, as a sequential operation typically involves a longer chain of data. To perform a sequential read or write operation to read or write a sequential number of data records, the CCW command must include a separate read command to read the user data from each CKD record on the track. A sequential operation involves reading or writing the user data areas on numerous consecutive tracks. A track includes multiple CKD records. Thus, to perform a sequential read or write operation with respect to user data, the host must send a separate read or write command for every CKD record including user data in every track. Further, when using an Enterprise System Connection Interface (ESCON.RTM.), further set-up commands may be involved in data transfer operations, thus further increasing network operations for sequential data transfers. ESCON is a registered trademark of IBM corporation. FIG. 1 illustrates the commands that must be performed to perform a read operation to retrieve multiple records, such as the case in a sequential read operation. As can be seen from FIG. 1 there are numerous set-up operations performed before the data is actually transferred. Further, multiple commands, labeled as number 2 in FIG. 1, are sent between the host and storage controller to read the user data sets in a CKD record. Thus, there is a separate instance of the read command sequence labeled number 2 for each user data area in a CKD record to read from the track.
As shown in the command sequence labeled number 2, to read user data from a CKD record in a track, the host must transfer the read command, the storage controller must return a frame indicating command acceptance, the storage controller then returns the requested data and, at the completion of returning the data, returns completion status. In the case of a sequential access involving numerous records, the host continues sending separate read command sequences, labeled number 2, to read user data from each CKD record on all the tracks involved until all user data is read. A write operation is similar, except that after the storage controller indicates acceptance of the write command, the host transmits the data record for a CKD record to the storage controller. Data transfer operations involving CKD records are further described in the IBM publications: "Enterprise Systems Architecture/390: ESCON I/O Interface," IBM document no. SA22-7202-02 (Copyright IBM Corp., 1990, 1991, 1992) and "IBM 3990 Storage Control Reference (Models 1, 2, and 3)," IBM document no. GA32-0099-06 (Copyright IBM Corp., 1998, 1994), which publications are incorporated herein by reference in their entirety.
Two commands, the Read Multiple Count Key Data (RMCKD) and Read Full Track (RFT), allow the transfer of multiple data records. RMCKD transfers the count, key, and data areas from multiple CKD records from a starting point to the end of a track. RFT transfers all the count, key and data areas on a track. Both these commands are utilized for dump/restore operations, such as when the entire track contents needs to be dumped to a storage area in the event of a system failure. The RFT and RMCKD commands are not useful for sequential data transfer operations because they transfer the count and key data along with the user data. Currently, for sequential data operations, only a series of multiple read operations is available to read user data area from each CKD record in a range of records to be sequentially accessed.
As can be seen, data transfer operations across multiple data records, such as is the case with sequential data transfers in the ESA 360, 370, and 390 type architectures, require the transmission of numerous commands which increases channel traffic and consequently reduces bandwidth. Accordingly, there is a need to improve the efficiency of data transfer operations.